package wodegua.d29_多线程;

/**
 * 多线程的创建方式二:实现Runnable接口
 * 1.定义一个线程任务类MyRunnable实现Runnable接口，重写run()方法
 * 2.创建MyRunnable任务对象
 * 3.把MyRunnable任务对象交给Thread处理，
 * Thread类提供的构造器
 * public Thread(Runnable target)       封装Runnable对象成为线程对象
 * 4.调用线程对象的start()方法启动线程
 *
 * 方式二的优缺点
 * 优点:任务类只是实现接口，可以继续继承其他类、实现其他接口，扩展性强。
 * 缺点:需要多一个Runnable对象。
 *
 * 线程创建方式二的匿名内部类写法
 * 1.可以创建Runnable的匿名内部类对象。
 * 2.再交给Thread线程对象。
 * 3.再调用线程对象的start()启动线程。
 */
public class d1_ThreadTest2 {
    public static void main(String[] args) {
        Runnable r = new MyRunnable();
        new Thread(r).start();

        Runnable r1 = new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.println("子线程1执行====>"+i);
                }
            }
        };
        new Thread(r1).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.println("子线程2执行====>"+i);
                }
            }
        }).start();

        new Thread(() -> {
            for (int i = 1; i <= 5; i++) {
                System.out.println("子线程3执行====>"+i);
            }
        }).start();


        for (int i = 1; i <= 5; i++) {
            System.out.println("主线程main执行====>"+i);
        }
    }
}
